package br.com.salao.bean;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

import org.codehaus.jackson.annotate.JsonIgnore;

@Entity
@Table(name = "agendamento")
@XmlRootElement
public class Agendamento implements Serializable {

	
	
	private static final long serialVersionUID = 1L;
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private int id;
	@Temporal(TemporalType.TIMESTAMP)
	private Date data;

	@Temporal(TemporalType.TIMESTAMP)
	private Date termino;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "id_funcionario_servico")
	private FuncionarioServicos funcionarioServicos;

	private String status;
	@Column(name = "data_cancelado", length = 10)
	private Date dataCancelado;

	@OneToOne
	@JoinColumn(name = "id_usuario_solicitante")
	private Usuario usuarioSolicitante;

	@Temporal(TemporalType.DATE)
	private Date created = new Date();

	@OneToOne
	private Estabelecimento estabelecimento;
	
	private int cancelado = 0;
	
	
	public Agendamento(){
		estabelecimento = new Estabelecimento();
		usuarioSolicitante = new Usuario();
		funcionarioServicos = new FuncionarioServicos();
	}

	@XmlElement
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	@XmlElement
	public Date getData() {
		return data;
	}

	public void setData(Date data) {
		this.data = data;
	}

	@XmlElement
	public String getStatus() {
		return status;
	}

	
	public void setStatus(String status) {
		this.status = status;
	}

	@XmlElement
	public Date getDataCancelado() {
		return dataCancelado;
	}

	public void setDataCancelado(Date dataCancelado) {
		this.dataCancelado = dataCancelado;
	}

	@XmlElement
	@JsonIgnore
	public Usuario getUsuarioSolicitante() {
		return usuarioSolicitante;
	}

	public void setUsuarioSolicitante(Usuario usuarioSolicitante) {
		this.usuarioSolicitante = usuarioSolicitante;
	}

	@XmlElement
	@JsonIgnore
	public FuncionarioServicos getFuncionarioServicos() {
		return funcionarioServicos;
	}

	public void setFuncionarioServicos(FuncionarioServicos funcionarioServicos) {
		this.funcionarioServicos = funcionarioServicos;
	}
	
	@XmlElement
	public Date getCreated() {
		return created;
	}

	@XmlElement
	public Date getTermino() {
		return termino;
	}

	public void setTermino(Date termino) {
		this.termino = termino;
	}

	public void setCreated(Date created) {
		this.created = created;
	}

	@XmlElement
	public Estabelecimento getEstabelecimento() {
		return estabelecimento;
	}

	public void setEstabelecimento(Estabelecimento estabelecimento) {
		this.estabelecimento = estabelecimento;
	}

	@XmlElement
	public int getCancelado() {
		return cancelado;
	}

	public void setCancelado(int cancelado) {
		this.cancelado = cancelado;
	}
}
